package oa.dao.base;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Set;

import org.jbpm.pvm.internal.query.Page;

import oa.domain.page.PageBean;
import oa.domain.system.Role;
import oa.util.HQLHelper;

public interface BaseDao<E> {

	/**
	 * 得到E代表的所有的实体对象
	 * @return
	 */
	public Collection<E> getAllEntry();
	
	public void saveEntity(E e);
	/**
	 * Serializable该类型可以接受所有的基本类型和String类型
	 * @param id
	 * @return
	 */
	public E getEntryById(Serializable id);
	
	public void updateEntry(E e);
	
	public void deleteEntry(Serializable id);

	/**
	 * 根据一个或者一个以上的id，返回一个Set<E>
	 */
	public Set<E> getEntryByIds(Serializable[] ids);
	
	public Set<E> getEntryByIds(String checkedStr);
	
	/**
	 * 根据条件查找实例对象
	 */
	public E getEntryByCondition(final String hql,final String... objects);
	
	/**
	 * 公共的分页方法
	 */
	public PageBean getPageBean(HQLHelper hh,int currentPage);

}
